home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 2: Applications / Linux Cubed Series 2 - Applications.iso / editors / emacs / xemacs / xemacs-1.004 / xemacs-1 / xemacs-19.13 / src / backtrace.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-03-21  |  2.3 KB  |  78 lines

  1. /* The lisp stack.
  2.    Copyright (C) 1985, 1986, 1987, 1992, 1993 Free Software Foundation, Inc.
  3.  
  4. This file is part of XEmacs.
  5.  
  6. XEmacs is free software; you can redistribute it and/or modify it
  7. under the terms of the GNU General Public License as published by the
  8. Free Software Foundation; either version 2, or (at your option) any
  9. later version.
  10.  
  11. XEmacs is distributed in the hope that it will be useful, but WITHOUT
  12. ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13. FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14. for more details.
  15.  
  16. You should have received a copy of the GNU General Public License
  17. along with XEmacs; see the file COPYING.  If not, write to the Free
  18. Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19.  
  20. /* Synched up with: Divergent from FSF. */
  21.  
  22. #ifndef _XEMACS_BACKTRACE_H_
  23. #define _XEMACS_BACKTRACE_H_
  24.  
  25. #include <setjmp.h>
  26.        
  27. /* These definitions are used in eval.c and alloc.c */
  28.  
  29. struct backtrace
  30.   {
  31.     struct backtrace *next;
  32.     Lisp_Object *function;
  33.     Lisp_Object *args;        /* Points to vector of args. */
  34.     int nargs;            /* Length of vector.
  35.                    If nargs is UNEVALLED, args points to
  36.                    slot holding list of unevalled args */
  37.     int pdlcount;               /* specpdl_depth () when invoked */
  38. #ifdef EMACS_BTL
  39.     /* The value of a Lisp integer that specifies the symbol being
  40.        "invoked" by this node in the backtrace, or 0 if the backtrace
  41.        doesn't correspond to a such an invocation */
  42.     int id_number;
  43. #endif
  44.     char evalargs;
  45.     /* Nonzero means call value of debugger when done with this operation. */
  46.     char debug_on_exit;
  47.   };
  48.  
  49.  
  50. struct catchtag
  51.   {
  52.     Lisp_Object tag;
  53.     Lisp_Object val;
  54.     struct catchtag *next;
  55.     struct gcpro *gcpro;
  56.     jmp_buf jmp;
  57.     struct backtrace *backlist;
  58.     int lisp_eval_depth;
  59.     int pdlcount;
  60.   };
  61.  
  62. /* Dynamic-binding-o-rama */
  63.  
  64. struct specbinding
  65.   {
  66.     Lisp_Object symbol, old_value;
  67.     Lisp_Object (*func) (Lisp_Object); /* for unwind-protect */
  68.   };
  69.  
  70. /* These are extern because GC needs to mark them */
  71. extern struct specbinding *specpdl;
  72. extern struct specbinding *specpdl_ptr;
  73. extern struct catchtag *catchlist;
  74. extern struct backtrace *backtrace_list;
  75. /* extern struct handler *handlerlist; */
  76.  
  77. #endif /* _XEMACS_BACKTRACE_H_ */
  78.